package com.sidifensen.domain.constants;

import cn.hutool.json.JSONUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * @author sidifensen
 * @since 2025-08-18
 */
public class MessageConstants {

    public static final String IMAGE_NEED_REVIEW = "图片id: %d 需要人工审核";
    public static final String ARTICLE_NEED_REVIEW = "文章id: %d , 标题: %s 需要人工审核, 原因: %s";
    public static final String ARTICLE_AUDIT_NOT_PASS = "文章id: %d , 标题: %s 内容审核不通过, 原因: %s";
    public static final String ARTICLE_AUDIT_PASS = "文章id: %d , 标题: %s 审核通过";

    // 评论相关消息模板
    public static final String COMMENT_NEED_REVIEW = "评论id: %d 需要人工审核, 原因: %s";
    public static final String COMMENT_AUDIT_NOT_PASS = "评论id: %d 内容审核不通过, 原因: %s";
    public static final String COMMENT_AUDIT_PASS = "评论id: %d 审核通过";

    // 友链相关消息模板
    public static final String LINK_NEED_REVIEW = "友链id: %d , 名称: %s 需要审核";
    public static final String LINK_AUDIT_PASS = "友链网址: %s 审核通过";

    // 头像相关消息模板
    public static final String AVATAR_NEED_REVIEW = "用户 %d 上传了新头像，图片ID: %d，需要审核";

    /**
     * 图片需要审核的消息
     *
     * @param photoId 图片id
     * @return 格式化后的消息
     */
    public static String ImageNeedReview(Integer photoId) {
        String text = String.format(IMAGE_NEED_REVIEW, photoId);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 文章需要审核的消息
     *
     * @param articleId 文章id
     * @return 格式化后的消息
     */
    public static String ArticleNeedReview(Integer articleId, String articleTitle, String reason) {
        String text = String.format(ARTICLE_NEED_REVIEW, articleId, articleTitle, reason);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 文章审核通过的消息
     *
     * @param articleId 文章id
     * @param title     文章标题
     * @return 格式化后的消息
     */
    public static String ArticleAuditPass(Integer articleId, String title) {
        String text = String.format(ARTICLE_AUDIT_PASS, articleId, title);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 文章审核不通过的消息
     *
     * @param message 审核不通过的消息
     * @return 格式化后的消息
     */
    public static String ArticleAuditNotPass(Integer articleId, String title, String message) {
        String text = String.format(ARTICLE_AUDIT_NOT_PASS, articleId, title, message);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 评论需要审核的消息
     *
     * @param commentId 评论id
     * @param reason    审核原因
     * @return 格式化后的消息
     */
    public static String CommentNeedReview(Integer commentId, String reason) {
        String text = String.format(COMMENT_NEED_REVIEW, commentId, reason);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 评论审核通过的消息
     *
     * @param commentId 评论id
     * @return 格式化后的消息
     */
    public static String CommentAuditPass(Integer commentId) {
        String text = String.format(COMMENT_AUDIT_PASS, commentId);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 评论审核不通过的消息
     *
     * @param commentId 评论id
     * @param message   审核不通过的消息
     * @return 格式化后的消息
     */
    public static String CommentAuditNotPass(Integer commentId, String message) {
        String text = String.format(COMMENT_AUDIT_NOT_PASS, commentId, message);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 友链需要审核的消息
     *
     * @param linkId 友链id
     * @param name   友链名称
     * @return 格式化后的消息
     */
    public static String LinkNeedReview(Integer linkId, String name) {
        String text = String.format(LINK_NEED_REVIEW, linkId, name);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 友链审核通过的消息
     *
     * @param url 友链网址
     * @return 格式化后的消息
     */
    public static String LinkAuditPass(String url) {
        return String.format(LINK_AUDIT_PASS, url);
    }

    /**
     * 头像需要审核的消息
     *
     * @param userId 用户id
     * @param photoId 图片id
     * @return 格式化后的消息
     */
    public static String AvatarNeedReview(Integer userId, Integer photoId) {
        String text = String.format(AVATAR_NEED_REVIEW, userId, photoId);
        Map<String, Object> map = new HashMap<>();
        map.put("text", text);
        return toJson(map);
    }

    /**
     * 将传入的Map参数转换为JSON格式
     *
     * @param map 包含数据的Map
     * @return JSON字符串
     */
    public static String toJson(Map<String, Object> map) {
        return JSONUtil.toJsonStr(map);
    }

}